﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

using PickGold.Arguments;

namespace PickGold.Handler
{
	/// <summary>
	/// 尝试方法
	/// </summary>
	[Serializable]
	[ComVisible(true)]
	public delegate RETURN TryRefHandler<RETURN, I, REF>(I input, ref REF output);

	/// <summary>
	/// 尝试方法
	/// </summary>
	[Serializable]
	[ComVisible(true)]
	public delegate RETURN TryRefHandler<RETURN, K, I, REF>(K key, I input, ref REF output);

	/// <summary>
	/// 尝试方法
	/// </summary>
	[Serializable]
	[ComVisible(true)]
	public delegate RETURN TryRefHandler<RETURN, K, I, P, REF>(K key, I input, P option, ref REF output);

	/// <summary>
	/// 尝试方法
	/// </summary>
	[Serializable]
	[ComVisible(true)]
	public delegate RETURN TryOutHandler<RETURN, I, OUT>(I input, out OUT output);

	/// <summary>
	/// 尝试方法
	/// </summary>
	[Serializable]
	[ComVisible(true)]
	public delegate RETURN TryOutHandler<RETURN, K, I, OUT>(K key, I input, out OUT output);

	/// <summary>
	/// 尝试方法
	/// </summary>
	[Serializable]
	[ComVisible(true)]
	public delegate RETURN TryOutHandler<RETURN, K, I, P, OUT>(K key, I input, P option, out OUT output);
}
